<template>
  <view class="uni-calendar-item__weeks-box" :class="{
    'uni-calendar-item--disable':weeks.disable,
    'uni-calendar-item--before-checked-x':weeks.beforeMultiple,
    'uni-calendar-item--multiple': weeks.multiple,
     'uni-calendar-item--after-checked-x':weeks.afterMultiple,
     }" @click="choiceDate(weeks)" @mouseenter="handleMousemove(weeks)"> <view class="uni-calendar-item__weeks-box-item" :class="{
       'uni-calendar-item--checked':calendar.fullDate === weeks.fullDate && (calendar.userChecked || !checkHover),
       'uni-calendar-item--checked-range-text': checkHover,
       'uni-calendar-item--before-checked':weeks.beforeMultiple,
       'uni-calendar-item--multiple': weeks.multiple,
        'uni-calendar-item--after-checked':weeks.afterMultiple,
        'uni-calendar-item--disable':weeks.disable,
         }">
     <text v-if="selected && weeks.extraInfo" class="uni-calendar-item__weeks-box-circle"/>
     <text class="uni-calendar-item__weeks-box-text uni-calendar-item__weeks-box-text-disable uni-calendar-item--checked-text">{{weeks.date}}</text>
   </view> <view :class="{'uni-calendar-item--today': weeks.isToday}"/>
  </view>
</template>

<script>
export default {
  props: {
    weeks: {
      type: Object,
      default () {
        return {}
      }
    },
    calendar: {
      type: Object,
      default: () => {
        return {}
      }
    },
    selected: {
      type: Array,
      default: () => {
        return []
      }
    },
    checkHover: {
      type: Boolean,
      default: false
    }
  },
  methods: {
    choiceDate(weeks) {
      this.$emit('change', weeks)
    },
    handleMousemove(weeks) {
      this.$emit('handleMouse', weeks)
    }
  }
}
</script>

<style lang="scss" >
$uni-primary: #007aff !default;

.uni-calendar-item__weeks-box {
  flex: 1;
  /* #ifndef APP-NVUE */
  display: flex;
  /* #endif */
  flex-direction: column;
  justify-content: center;
  align-items: center;
  margin: 2rpx 0;
  position: relative;
}

.uni-calendar-item__weeks-box-text {
  font-size: 28rpx;
  // font-family: Lato-Bold, Lato;
  font-weight: bold;
  color: darken($color: $uni-primary, $amount: 40%);
}

.uni-calendar-item__weeks-box-item {
  position: relative;
  /* #ifndef APP-NVUE */
  display: flex;
  /* #endif */
  flex-direction: column;
  justify-content: center;
  align-items: center;
  width: 80rpx;
  height: 80rpx;
  /* #ifdef H5 */
  cursor: pointer;
  /* #endif */
}

.uni-calendar-item__weeks-box-circle {
  position: absolute;
  top: 10rpx;
  right: 10rpx;
  width: 16rpx;
  height: 16rpx;
  border-radius: 16rpx;
  background-color: #dd524d;

}

.uni-calendar-item__weeks-box .uni-calendar-item--disable {
  cursor: default;
}

.uni-calendar-item--disable .uni-calendar-item__weeks-box-text-disable {
  color: #D1D1D1;
}

.uni-calendar-item--today {
  position: absolute;
  top: 20rpx;
  right: 17%;
  background-color: #dd524d;
  width:12rpx;
  height: 12rpx;
  border-radius: 50%;
}

.uni-calendar-item--extra {
  color: #dd524d;
  opacity: 0.8;
}

.uni-calendar-item__weeks-box .uni-calendar-item--checked {
  background-color: $uni-primary;
  border-radius: 50%;
  box-sizing: border-box;
  border: 6rpx solid #fff;
}

.uni-calendar-item--checked .uni-calendar-item--checked-text {
  color: #fff;
}

.uni-calendar-item--multiple .uni-calendar-item--checked-range-text {
  color: #333;
}

.uni-calendar-item--multiple {
  background-color:  #F6F7FC;
  // color: #fff;
}

.uni-calendar-item--multiple .uni-calendar-item--before-checked,
.uni-calendar-item--multiple .uni-calendar-item--after-checked {
  background-color: $uni-primary;
  border-radius: 50%;
  box-sizing: border-box;
  border: 6rpx solid #F6F7FC;
}

.uni-calendar-item--before-checked .uni-calendar-item--checked-text,
.uni-calendar-item--after-checked .uni-calendar-item--checked-text {
	color: #fff;
}

.uni-calendar-item--before-checked-x {
  border-top-left-radius: 100rpx;
  border-bottom-left-radius: 100rpx;
  box-sizing: border-box;
  background-color: #F6F7FC;
}

.uni-calendar-item--after-checked-x {
  border-top-right-radius: 100rpx;
  border-bottom-right-radius: 100rpx;
  background-color: #F6F7FC;
}
</style>
